506. 相对名次
https://leetcode-cn.com/problems/relative-ranks/
- 提交时间:2021-12-01 03:45:23
- 执行用时:12 ms, 在所有 Go 提交中击败了81.55%的用户
- 内存消耗:6.4 MB, 在所有 Go 提交中击败了54.37%的用户
- 通过测试用例:17 / 17
var gold []string = []string{
"Gold Medal",
"Silver Medal",
"Bronze Medal",
}
type Arr []int
func (t Arr) Len() int {
return len(t)
}
func (t Arr) Less(i, j int) bool {
//正序
// return t[i] < t[j]
//逆序
return t[i] > t[j]
}
func (t Arr) Swap(i, j int) {
t[i], t[j] = t[j], t[i]
}
func findRelativeRanks(score []int) (ans []string) {
var scoreArr Arr = append([]int(nil), score...)
sort.Sort(scoreArr)
// fmt.Printf("scoreArr:%+v\n", scoreArr)
//分数 名次
goldMap := map[int]int{}
for ranking, scoreItem := range scoreArr {
goldMap[scoreItem] = ranking
}
for _, scoreItem := range score {
if ranking := goldMap[scoreItem]; ranking > 2 {
ans = append(ans, strconv.Itoa(ranking+1))
} else {
ans = append(ans, gold[ranking])
}
}
// fmt.Printf("score:%+v\n", score)
return
}